﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QldtSdh.DAL.Models;

namespace QldtSdh.BLL
{
    public partial class BizLichBaoTri
    {
        public static List<LichBaoTri> GetList(string maChiTietMay)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                return db.LichBaoTriDbSet.Where(e => e.MaChiTietMay == maChiTietMay).OrderBy(e => e.NgayBaoTri).ToList();
            }
        }

        public static List<LichBaoTriCustom> GetList(int distance, string maMaySanXuat, string manv)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                DateTime temp = DateTime.Now.AddDays(distance);
                DateTime dt = new DateTime(temp.Year, temp.Month, temp.Day, 23, 59, 59);
                var lsCTMDPC = db.PhanCongBaoTriDbSet.Where(e => e.MaNhanVien == manv).Select(e => e.MaChiTietMay).ToList();
                var ls = db.LichBaoTriDbSet.
                    Include("NhiemVuBaoTri").
                    Include("ChiTietMay").
                    Include("ChiTietMay.BoPhanMay").
                    Include("ChiTietMay.BoPhanMay.MaySanXuat").
                    Include("ChiTietMay.BoPhanMay.MaySanXuat.CongDoanSanXuat")
                    .Where(e =>
                        e.NgayBaoTri <= dt &&
                        e.ChiTietMay.BoPhanMay.MaySanXuat.MaMaySanXuat == maMaySanXuat &&
                        (string.IsNullOrEmpty(manv) ? true : lsCTMDPC.Contains(e.MaChiTietMay)))
                    .OrderBy(e => e.NgayBaoTri)
                    .Select(e => new LichBaoTriCustom
                    {
                        _TenBoPhanMay = e.ChiTietMay.BoPhanMay.TenBoPhanMay,
                        _TenChiTietMay = e.ChiTietMay.TenChiTietMay,
                        _TenCongDoan = e.ChiTietMay.BoPhanMay.MaySanXuat.CongDoanSanXuat.TenCongDoanSanXuat,
                        _TenMaySanXuat = e.ChiTietMay.BoPhanMay.MaySanXuat.TenMaySanXuat,
                        ChuKy = e.ChuKy,
                        GhiChu = e.GhiChu,
                        MaChiTietMay = e.MaChiTietMay,
                        MaLichBaoTri = e.MaLichBaoTri,
                        MaNhiemVuBaoTri = e.MaNhiemVuBaoTri,
                        NgayBaoTri = e.NgayBaoTri,
                        _TenNhiemVuBaoTri = e.NhiemVuBaoTri.TenNhiemVuBaoTri,
                    })
                    .ToList();
                for (int i = 0; i < ls.Count; i++)
                {
                    ls[i]._QuaHan = DateTime.Now.Date.Subtract(ls[i].NgayBaoTri.Date).Days;
                    ls[i]._NgayBaoTri = string.Format("{0:dd/MM/yyyy}", ls[i].NgayBaoTri);
                    if (ls[i]._QuaHan < 0)
                        ls[i].Mau = BizAppConfig.GetMAUTRUOCHAN();
                    else if (ls[i]._QuaHan == 0)
                        ls[i].Mau = BizAppConfig.GetMAUTOIHAN();
                    else if (ls[i]._QuaHan > 0)
                    {
                        if (ls[i]._QuaHan <= 0.3 * ls[i].ChuKy)
                            ls[i].Mau = BizAppConfig.GetMAUQUAHANDUOI30();
                        else
                            ls[i].Mau = BizAppConfig.GetMAUQUAHAN();
                    }
                }
                return ls;
            }
        }

        //public static List<LichBaoTriCustom> GetList(int distance)
        //{
        //    using (var db = CEMS4UG_DHKHContext.GetContext())
        //    {
        //        DateTime dt = DateTime.Now.AddDays(distance);
        //        var ls = db.LichBaoTriDbSet.
        //            Include("NhiemVuBaoTri").
        //            Include("ChiTietMay").
        //            Include("ChiTietMay.BoPhanMay").
        //            Include("ChiTietMay.BoPhanMay.MaySanXuat").
        //            Include("ChiTietMay.BoPhanMay.MaySanXuat.CongDoanSanXuat")
        //            .Where(e => e.NgayBaoTri <= dt).OrderBy(e => e.NgayBaoTri)
        //            .Select(e => new LichBaoTriCustom
        //            {
        //                _TenBoPhanMay = e.ChiTietMay.BoPhanMay.TenBoPhanMay,
        //                _TenChiTietMay = e.ChiTietMay.TenChiTietMay,
        //                _TenCongDoan = e.ChiTietMay.BoPhanMay.MaySanXuat.CongDoanSanXuat.TenCongDoanSanXuat,
        //                _TenMaySanXuat = e.ChiTietMay.BoPhanMay.MaySanXuat.TenMaySanXuat,
        //                ChuKy = e.ChuKy,
        //                GhiChu = e.GhiChu,
        //                MaChiTietMay = e.MaChiTietMay,
        //                MaLichBaoTri = e.MaLichBaoTri,
        //                MaNhiemVuBaoTri = e.MaNhiemVuBaoTri,
        //                NgayBaoTri = e.NgayBaoTri,
        //                _TenNhiemVuBaoTri = e.NhiemVuBaoTri.TenNhiemVuBaoTri,
        //               //_QuaHan = DateTime.Now.Subtract(e.NgayBaoTri).Days,
        //               //_NgayBaoTri = string.Format("{0:dd/MM/yyyy}",e.NgayBaoTri)
        //            })
        //            .ToList();
        //        for (int i = 0; i < ls.Count; i++)
        //        {
        //            ls[i]._QuaHan = DateTime.Now.Subtract(ls[i].NgayBaoTri).Days;
        //            ls[i]._NgayBaoTri = string.Format("{0:dd/MM/yyyy}", ls[i].NgayBaoTri);
        //            if (ls[i]._QuaHan < 0)
        //                ls[i].Mau = BizAppConfig.GetMAUTRUOCHAN();
        //            else if (ls[i]._QuaHan == 0)
        //                ls[i].Mau = BizAppConfig.GetMAUTOIHAN();
        //            else if (ls[i]._QuaHan > 0)
        //                ls[i].Mau = BizAppConfig.GetMAUQUAHAN();
        //        }
        //        return ls;
        //    }
        //}

        public static LichBaoTri GetByID(string maLichBaoTri)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                return db.LichBaoTriDbSet.Where(e => e.MaLichBaoTri == maLichBaoTri).FirstOrDefault();
            }
        }

        public static bool IsExistByNhiemVuAndChiTietMay(string maNhiemVu, string maChiTietMay)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                return db.LichBaoTriDbSet.Where(e => e.MaNhiemVuBaoTri == maNhiemVu && e.MaChiTietMay == maChiTietMay).FirstOrDefault() != null ? true : false;
            }
        }
    }

}
